Global Routing Resource에서 설명을 했듯이 FPGA 에 있어서 clock 은 상당히 중요한
역할을 하며 잘 사용해야 합니다.
그런데 만약 보드에 연결되어 있는 오실레이터가 50Mhz 인데 100MHz 를 사용해야
하는 경우가 생긴다면 사용자는 보드에 연결되어 있는 오실레이터를 제거하고
100Mhz 의 오실레이터를 다시 연결한다면 보드에 문제가 생길 수 있으며,
이미 칩들이 다 연결되어 있는 보드이므로 PLL 또는 DLL 칩셋을 달기도 어렵습니다.
그래서 이러한 문제점들을 해결하기 위해서 FPGA 내부에서는 DCM(Digital Clock Manager)
라고 하는 기능이 있습니다.
그림1 DCM 블록 구조
그림2 DLL 블록 구조
즉 원하는 clock 을 생성 시켜 주는 기능을 할 수 있습니다.
이러한 기능은 위의 그림 1 을 보면 CLKFX 라고 되어 있는 부분이 있는데 이것을 사용하면
원하는 clock 을 생성시켜주게 됩니다.
생성시켜주는 clock 은 입력주파수 x (M/D) = 출력 주파수 의 형태로 동작을 합니다.
즉 생성하기 위한 clock 이 100Mhz 이고 입력 clock 이50Mhz 이면 50 x (2/1)이 되어
생성이 되는 것입니다.
이때 사용 가능한 M 과 D 값은 M : 2 ~ 32, D : 1 ~32 입니다.
이러한 clock 채배 분주 기능 외에 위상을 변환시켜 줍니다.
예로 DDR 메모리를 연결하기 위해서는 rising edge 에서 한 번, falling edge 에서 한 번
데이터를 전송해야 DDR 의 기능을 동작 시킬 수 있습니다.
그런데 이러한 clock 을 동기에 맞게 제공해주는 것이 일반적인 로직으로 구성하기
어려우므로 이것을 DCM 을 이용하여 생성하게 됩니다.
즉 위의 그림 1 과 그림 2 를 보게 되면 clock 의 위상을 CLK0, CLK90, CLK180, CLK270
등의 clock 이 생성될 수 있음을 나타냅니다.
여기서 CLK0, CLK180을 사용하면 DDR을 사용하기 위한 clock으로 사용할 수 있습니다.
또한 그림2의 DLL 기능처럼 일정한 delay 탭을 둬서 그에 맞게 clock의 delay를 ps단위로
앞뒤로 조절하여 사용할 수 있습니다.
이러한 기능들을 Xilinx에서는 DLL, DFS, DPS라고 불리며 DLL은 Delay Lock Loop, DFS는
Digital Frequency Synthesizer, DPS는 Digital Phase Shifter라고 합니다.
위에 동작되는 스펙은 디바이스 마다 다를 수 있으므로 필요에 따라서 데이터시트를 참조 하십시오.